//package abg.core.common.websocket.handler;
//
//import com.alibaba.fastjson2.JSONObject;
//import io.netty.channel.Channel;
//import io.netty.channel.ChannelHandler;
//import io.netty.channel.ChannelHandlerContext;
//import io.netty.channel.SimpleChannelInboundHandler;
//import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Component;
//
//import java.util.Enumeration;
//import java.util.Iterator;
//import java.util.concurrent.ConcurrentHashMap;
//
///**
// * 处理文本信息
// */
//@Slf4j
////@Component
////@ChannelHandler.Sharable
//public class TextHandler extends SimpleChannelInboundHandler<TextWebSocketFrame> {
//
//    // 用于记录和管理所有客户端的channle
//    public static ConcurrentHashMap<String, Channel> channelAll = new ConcurrentHashMap<>();
//
//    @Override
//    protected void channelRead0(ChannelHandlerContext ctx, TextWebSocketFrame frame) throws Exception {
//        //获取客户端传输过来的消息
//        //byte[] decodedBytes = Base64.getDecoder().decode(base64String);
//        //如果您需要将解码后的数据转换为字符串，可以使用以下方法：
//        //String decodedString = new String(decodedBytes, StandardCharsets.UTF_8);
//        //ByteBuf byteBuf = Unpooled.wrappedBuffer(decodedBytes);
//
//        String text = frame.text();
//        log.info("接收到消息 text==> {}", text);
//
//        JSONObject jsonObject = JSONObject.parseObject(text);
//        log.info("接收到消息 jsonObject==> {}", jsonObject.toString());
//        jsonObject.put("type", "PLAY_AUDIO");
//        jsonObject.put("fileName", System.currentTimeMillis());
//
//        Enumeration<String> keys = channelAll.keys();
//        Iterator<String> iterator = keys.asIterator();
//
//        String userChannelKey = ctx.channel().id().asLongText();
//
//        while (iterator.hasNext()) {
//            String channelKey = iterator.next();
//            Channel channel = channelAll.get(channelKey);
//
//            if (!userChannelKey.equals(channelKey)) {
//                channel.writeAndFlush(new TextWebSocketFrame(jsonObject.toString()));
//            }
//
//        }
//
//    }
//
//    /**
//     * 连接成功回调
//     */
//    @Override
//    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {
//        log.info("连接成功--->" + ctx.channel().id().asLongText());
//        channelAll.put(ctx.channel().id().asLongText(), ctx.channel());
//    }
//
//    /**
//     * 连接被移除后 回调
//     */
//    @Override
//    public void handlerRemoved(ChannelHandlerContext ctx) throws Exception {
//        log.info("连接被移除--->" + ctx.channel().id().asLongText());
//        channelAll.remove(ctx.channel().id().asLongText());
//    }
//
//    /**
//     * 连接异常回调
//     */
//    @Override
//    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
//        log.info("发生异常之后关闭连接（关闭channel），随后从ChannelGroup中移除--->" + ctx.name());
//        cause.printStackTrace();
//        channelAll.remove(ctx.channel().id().asLongText());
//        ctx.channel().close();
//    }
//
//}
